perm filename PROP.TO[P,JRA] blob sn#559240 filedate 1981-01-26 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	Here's an outline of what's going on, what's been written and where things
C00018 00003	Books already in "market"
C00022 00004	What a modern LISP book should have.
C00027 ENDMK
CāŠ—;
Here's an outline of what's going on, what's been written and where things
are going. The  situation is rather  jumbled right now  because I'm  doing
about eight things  at once,  all alone, and  all without  funds. What  is
certain is that  at least  one book will  appear from  this chaos  --three
courses depend on it--; and further, the ultimate success of this endeavor
depends on the finances and marketing skills of a firm with more resources
than I possess.


The ultimate goal is the revitalization of the mathematics programs in our
high school, basing the  curricula on the  fundamental ideas that  support
computation. The tool to support this effort is LISP.


By way of background, sometime in 1974 while writing "Anatomy of LISP", it
occurred to me  that the  principles supporting LISP  were an  appropriate
vehicle to  use  in  discussing  computation at  the  high  school  level.
Besides having  a rich  history  of interesting  application  --Artificial
Intelligence--, it possesses a novel  feature in the realm of  programming
languages:  it has a mathematically  rigorous foundation.  With this  dual
support --intriguing applications, and  substantial content-- it seemed  a
natural way to teach mathematics  and computing:  mathematics as a  formal
system,  like  geometry,  with  the  same  degree  rigor  and  axiomatics;
mathematics as a foundation for the notion of functionality; computing  as
a creative and intellectual endeavor --something more than the "electronic
driver education"  crap that  gets  passed off  now  as high  school  (and
unfortunately,  college)   computing.    Unfortunately   at   that   time,
computational devices were much too expensive to support high-school level
usage of  an  interactive LISP;  also  at that  time  I was  deep  in  the
writing/revision of "Anatomy".

When "Anatomy" was  in press  I approached McGraw-Hill  about a  follow-on
book: January 1978.  By this time, personal computing had arrived and  the
natural thing  was to  integrate the  learning of  the language  with  the
system on which it was to be run. The primary example of this scheme  (and
its success!) is UCSD Pascal.  Unfortunately McGraw-Hill wanted the  book,
but balked at the  prospect of integrated learning.   A short while  later
BYTE Books  approached me,  but again  they were  only interested  in  the
"text"  part  of  the  project;   that  suprised  me,  considering   their
background.

By this time it was June of  1979 and I was thoroughly convinced that  the
integrated approach was the only way to impact education and computing  (I
think the UCSD Pascal experience reinforces that belief) I formed The LISP
Company, to  produce the  computer end  of the  plan. The  resulting  LISP
system for the Z-80 supplies a professional, quality LISP system at modest
cost.  By January 1980 the LISP was solid and now the problem was to build
an integrated curriculum.

The plan  had to  wait for  a while  because I  had to  organize the  LISP
Conference.  I had decided  in the fall of  1978 that this conference  was
needed but no one would move on it, so in the fall of 1979 I organized  it
myself, assuming that  people would help  out. By Jan  1980, it was  clear
that nothing was  going to happen  unless I  did it, so  TLC went  dormant
while I wrote  letters, licked  stamps, berrated  tardy reviewers,  pasted
folios, and generally when broke and crazy.

This brings me to last fall. By then, I had a reasonably clear idea in how
to present the technical aspects, but felt uneasy --computing is more than
technology's toy.   I prepared  a talk  for the  last SIGSMALL  Conference
blasting the superficial  approach to computing  --that paper turned  into
the attached "Bankruptcy of  Basic". Carl Helmers, editor  of BYTE, and  I
discussed our general dislike  about the apparently superficial  attitudes
on computing  and have  decided to  hold  a special  session at  the  next
SIGSMALL Conference on "Languages for Thinking about Thinking"

I approached Texas Instruments with the integrated educational plan  since
they profess  strong  interest  in  AI, LISP,  and  education;  they  were
interested, even to the point of flying me to Dallas.  Unfortunately, they
claimed that a bad financial picture would not let them support the  whole
project, but took the  reverse position to that  of BYTE and  McGraw-Hill,
opting for the LISP  part that impacted on  professional systems, not  the
educational aspects.  To me, that's equally unsatisfactory. If substantial
changes are to be made, a massive and integrated effort is required.   The
irony of the TI position is that they say the plan would have been adopted
without problem six-months earlier; that was  when I was deluged with  the
Conference organization,  and TI  was  one of  the  companies that  I  had
approached to help support the conference. Sigh, what if...

Late last year, several other things  came together.  I taught a  graduate
course at Santa Clara University on "Functional Programming" and from that
came a set of notes/slides.  These notes are being expanded into technical
part of the spring  undergraduate course, "The  Art of Computer  Science".
The new  ingredient in  the spring  course is  an Interactive  Programming
Laboratory. I plan to  use a network of  Z-80's running TLC-LISP,  Rosetta
Samlltalk, Visicalc,  and  assorted  other good  examples  of  interactive
behavior --understanding the techniques of computation is like learning to
drive: one  has to  use the  instrument.  Unfortunately,  I'm running  the
course out  of my  own pocket  (another LISP  conference experience),  and
personal loans.  I fear that unless I can obtain additional funds  quickly
the lab may be stripped to the point where a meaningful demonstration  may
not be possible.

This term I'm teaching a graduate class in "Artificial Intelligence", as a
follow-on the  the Functional  programming  experience.  Mixed  into  this
"stew"  is   another  ingredient.    I  volunteered   to  do   a   special
lisp/functional-programming/object-oriented session at  the upcoming  West
Coast Computer Faire, and  for that, present a  half-day tutorial on  LISP
and friends. I was  supposed to consolidate all  this business into  eight
pages for  the proceeding;  I made  it in  twelve, from  basic notions  of
computation, through LISP and frame languages, to Visicalc as an  instance
of constraint-based programming.   This paper is  being expanded into  the
undergraduate course.

I expect to present the material,  with a more emphasis on the  humanities
side of  the  issues,  as  a Santa  Clara  faculty  workshop  in  computer
literacy,  augmenting  the  technical  side  with  explorations  into  the
cultural impact of computing.  My current  view is to use "The Decline  of
the West" by  Spengler as  the major  point of  reference.  This  workshop
should  prove  incredibly  exciting   and  beneficial  in  broadening   my
understanding of the societal issues of computing; this course is  planned
as a continuing program for the School of Humanities.

Also I will  present an advanced  technical version of  the material as  a
course in  the  11th  Annual  Summer  Computer  Science  Institute.   This
institute, usually run at U.C. Santa Cruz, will be held on the Santa Clara
campus and will draw a  substantial number of proefssionals interested  in
LISP and AI applications.

So the future holds promise.  There  is at least one book --probably  two,
maybe three at the college level; at  least one at the high school  level.
The immediate problem is financial.  I need a financial (an almost  moral)
commitment from an organization  to help support this  project. As I  said
earlier, the ultimate goal is to move  this type of program into the  high
schools. What I have seen of the computer-related high school programs  is
not at all encouraging; what exists  as traditional programs is even  more
depressing. A fresh perspective is needed.  I feel that my approach  holds
great promise.


Summary of courses and projects:

1. SCU, Fall term 1980, graduate course: "Functional Programming"

2. SCU, Winter term 1981, graduate course: "Artificial Intelligence"

3. SCU, Spring term 1981, undergraduate course: "Art of Computer Science"
   a prototype of class for entering CS students.

4. Spring, West Coast Computer Faire, Special "LISP/Object-oriented Session"
   papers, demos, and tutorials on LISP, LOGO, Smalltalk -ish things.

5. Summer 1981, C.S. Institute course: "LISP".
   to be taught with Larry Masinter of Xerox PARC

6. (tentative) SCU Faculty Seminar at Santa Clara: "Computer Literacy"
   a prototype of class for entering Humanities students.

7. (tentative) High School teacher's summer workshop.

8. Fall 1981, Sigsmall special session on "Languages for Thinking about Thinking"
   to be co-organized with Carl Helmers

Summary of Papers:

1. The Bankruptcy of Basic. Directed to high school mathematics personnel.

2. LISP, Functional Programming, .... Summary of technical part of the 
   undergraduate SCU course.

3. Computer Literacy. Proposal the the Administration  of SCU to develop a 
   faculty seminar.

4. The Art of Computer Science: an outline of the technical part of the 
   undergraduate SCU course.


5. Interactive Programming Laboratory. A minimal budget for the undergraduate
   laboratory.

6. Mathematics and Science Curriculum. Short description of the  longer range
   plan to move this program toward high schools.

7. LISP: An outline of the Summer Computer Science Institute course.

lois
Books already in "market"

Winston: LISP  --Addison-Wesley

    Book has no  sense of programming  "style", basically presenting  1960
    view  of  LISP.    No  attention  to   abstraction,  either  in   data
    representation or in programming (i.e. structured programming).

    Has a good set of introductory exercises.

    Some attention to non-AI kinds of applications

    Some attention to evaluation/implementation mechanisms

    No sense of functional programming over the 1960 LISP view.

Charniak, et. al.: Artificial Intelligence Programming --Erlbaum

    Non-stuctured  view of language, mixing applicative (functional), 
    imperative, and subconscious (rplaca/d) LISP all together.

    Poor set of introductory exercises.

    Good sense of data abstraction, and how to use it, and implement it.

    Uses LISP 1.6 (1965) view of LISP; better than 1965, but not best 
    possible.

    No treatment of scoping problems --the critical issue in functional
    objects.

    Does have some attention given to functional ideas in back (Schum)
    Far from complete, and not integrated into book.

    Nothing about implementation.

Henderson: Functional Programming --Prentice Hall

    Uses the meta-language/object-language distinction throughout the book
    (as does "Anatomy of LISP"), therefore not an appropriate book for 
    learning about LISP-like programming.

    Incomplete view of LISP: no conception of property-lists, the key to
    object oriented programming.

    No sense of abstract data structures.

    No LISP macros: the key to efficient implementation of abstract
    structure definitions.

    Nothing about programming technology (programming environments)

--------------------------------------------
Allen: Anatony of LISP  --McGraw-Hill

    Not a programming book, a concepts book

Siklossy: Let's Talk LISP --?

    Cutesy, and full of inaccuracies

Friedman: The Little LISPer  --SRA

    Cutesy style to the point of sickness

    no concept of programming style

    1960 LISP

McCarthy & Talcott: LISP programming and Proving(?) --MIT press

    1960 pure LISP as the basis of mathematical theory of computation
What a modern LISP book should have.
 
In preparing for  the future,  a LISP  book should  contain material  that
explains the concepts  underlying programming  technology. The  technology
includes "classes",  "hierarchies","constraints", "object-oriented"  ideas
for example.   These ideas  are  related to  basic LISP  constructs  quite
naturally; an informal treatment is given  in my paper for the West  Coast
Computer  Faire,  "A  VIEW  OF  LISP,  FUNCTIONS,  OBJECTS,  FRAMES,   AND
CONSTRAINTS".  As Smalltalk  becomes available,  it will  be important  to
supply texts that explain the fundamental ideas that support the Smalltalk
exterior.

A further,  but related,  consideration is  the treatment  of  programming
environments, what they are and how interactive programming impacts on the
program design  process.  As LISP  and  Smalltalk machines  become  widely
available, more people will wish  to understand the philosophy  supporting
interactive programming. It is  quite distinct from  that espoused by  the
Pascal school.

Below is a short summary of  topics that should be coverd, including
references to texts that may cover part of that material.

key: AIP = Charniak, et. al.
     LISP = Winston's book
     FP = Henderson
     Anatomy = me

modern lisp: lisp machine lisp  cleaned up) => TLC-LISP
	(no one only a rough approximation in the TLC-LISP Manual)

strong emphasis on data abstraction 
	(Anatomy, AIP)

strong emphasis on program abstraction: functional objects
	(FP)

strong emphasis on abstraction in general: language as notation
	(no one)

strong partition of language into applicative, imperative, and "features" 
	(Anatomy, FP somewhat)

good set of exercises
	(LISP)

modern view of LISP data: first-class objects.
	(no one! This is the key to object-oriented/actor ideas)

object-oriented programming  and its underlying principles
	(slight amount in Anatomy, AIP, and LISP, not in depth.
         this will be VERY important as Smalltalk becomes available)

concern for programming environment, and its relation to "style" and, in fact,
language design.
	(no one!)